/*
    实现日志消息类, 用于存储日志的中间信息:
    1.输出日志的时间;
    2.日志的等级
    3.源文件的名称
    4.错误所在的行号
    5.线程id
    6.主体消息
    7.日志器的名称
*/
#ifndef __L_MESSAGE_H__
#define __L_MESSAGE_H__

#include <iostream>
#include <thread>
#include <string>
#include "level.hpp"
#include "util.hpp"


namespace Log
{
    struct LogMessage
    {
        time_t _ctime;  //日志输出的时间
        LogLevel::value _level; //日志等级
        std::string _file;  //源文件的名称
        size_t _line;   //行号
        std::thread::id _tid;   //线程id
        std::string _payLoad;   //主体消息
        std::string _logger;    //日志器的名称

        LogMessage(LogLevel::value level, 
            const std::string& file, 
            size_t line, 
            const std::string& payLoad, 
            const std::string& logger)
        :_ctime(util::Date::now()), 
        _level(level), 
        _file(file), _line(line), 
        _tid(std::this_thread::get_id()), 
        _payLoad(payLoad), 
        _logger(logger)
        {}
    };
}

#endif